﻿using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using WikiDoc.Formatter;
using WikiDoc.Lines;
using WikiDoc.Utils;

namespace WikiDoc.Parser
{
    /// <summary>
    /// 对普通段落 wiki 文本进行解析，输出 para 标签。
    /// </summary>
    class ParagraphParser
    {
        /// <summary>
        /// 获取一个完整的段落，直到段落结束，函数退出后当前行是段落结束后的第一行。
        /// 如果进入函数时当前行不是一个普通段落行，则当前行不变。
        /// </summary>
        /// <param name="reader">The reader.</param>
        /// <param name="formatter">The formatter.</param>
        public void Process(WikiReader reader, IFormatter formatter)
        {
            var sb = new OutputBuffer();
            var keepgo = true;

            while (keepgo)
            {
                switch (reader.CurrentLine.Type)
                {
                    case LineTypes.Normal:
                        sb.AppendLine(reader.CurrentLine.Line);

                        reader.ReadLine();
                        break;

                    default:
                        keepgo = false;
                        break;
                }
            }

            if (sb.Length > 0)
            {
                formatter.BeginTag("para");
                var content = sb.Flush();
                content = WikiTranslater.SimpleTranslate(content);
                formatter.AppendContent(content);
                formatter.EndTag("para");
            }
            return;

        }
    }
}
